class Solution {
    void dfs(vector<int>& A, vector<int>& B, vector<int>& C, int n) {
        if (n == 1) {
            C.emplace_back(A.back());
            A.pop_back();
            return;
        }
        dfs(A, C, B, n - 1);
        C.emplace_back(A.back());
        A.pop_back();
        dfs(B, A, C, n - 1);
    }

public:
    void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {
        int n = A.size();
        dfs(A, B, C, n);
        return;
    }
};